home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / 3rdparty / tools / toolcrft / pbcombo.tpw < prev    next >
Encoding:
Text File  |  1995-10-23  |  46.7 KB  |  911 lines

  1. #!---------------------------------------------------------!
  2. #!                                                         !
  3. #! Copyright 1994, 1995 ToolCraft Development Corporation  !
  4. #!                                                         !
  5. #!                  ALL RIGHTS RESERVED                    !
  6. #!                                                         !
  7. #!---------------------------------------------------------!
  8. #!
  9. #!
  10. #!=============================================================================!
  11. #!                                                                             !
  12. #! Page/Loaded Drop Combo List Box Control                                     !
  13. #!                                                                             !
  14. #!=============================================================================!
  15. #CONTROL(DropComboBrowse,'Page Loaded Drop Combo Browse Box'),PRIMARY('PB DropCombo Control'),REQ(PowerBrowseLibrary(ToolCraft)),DESCRIPTION('PB DropCombo on ' & %Primary),MULTI
  16.      CONTROLS
  17.        COMBO(@S40),AT(,,80,10),USE(ComboEntry),DROP(6),IMM,VSCROLL,FROM(BRWQ)
  18.      END
  19.  
  20. #BUTTON('DropCombo Browse Box Behavior'),AT(10,,180)
  21.   #SHEET
  22.     #TAB('C&onfiguration'),HLP('~BrowseBox'),HLP('~PBDropComboBrowseConfigurationTab')
  23.       #PROMPT('Use &View Structure',CHECK),%UsingViewStructure,AT(10,30,105)
  24.       #PROMPT('Refresh &Window After Selection is Made',CHECK),%RefreshWindowOnSelection,AT(10,,140)
  25.       #PROMPT('Enable "Hot" &Display Fields',CHECK),%HotDisplay,AT(10,,105)
  26.       #PROMPT('Enable Last Entry Restore on ESC Key',CHECK),%ComboRestoreOnESC,AT(10,,135),DEFAULT(1)
  27.       #PROMPT('&Update Procedure:',PROCEDURE),%ComboUpdateProcedure,AT(,80),PROMPTAT(,80)
  28.       #PROMPT('Relate to For&m Using:',DROP('Field Value|Non-Related Key')),%ComboRelationType,DEFAULT('Field Value'),AT(,100),PROMPTAT(,100)
  29.       #BOXED,WHERE(%ComboRelationType='Non-Related Key')
  30.         #PROMPT('Lookup &Key:',KEY(%Primary)),%ComboLookupKey,AT(97,112,87,10),PROMPTAT(10,112,87,10)
  31.         #VALIDATE(%ComboLookupKey,'You must select a Lookup Key')
  32.         #ENABLE(%ComboLookupKey),CLEAR
  33.           #PROMPT('Lookup &Field:',FIELD(%Primary)),%ComboLookupField,AT(97,124,87,10),PROMPTAT(10,124,87,10)
  34.           #VALIDATE(%ComboLookupField,'You must select a Lookup Field')
  35.         #ENDENABLE
  36.         #PROMPT('&Related Field:',FIELD),%ComboRelatedField,AT(97,136,87,10),PROMPTAT(10,136,87,10)
  37.         #VALIDATE(%ComboRelatedField,'You must select a Related Field')
  38.       #ENDBOXED
  39.     #ENDTAB
  40.     #TAB('&Display Setup'),HLP('~PBDropComboBrowseDisplaySetupTab')
  41.       #PROMPT('Key Display &Order:',DROP('Normal|Reverse')),%KeyDisplayOrder,DEFAULT('Normal'),AT(,30),PROMPTAT(,30)
  42.       #PROMPT('&Locator:',DROP('None|Auto Fill')),%ComboLocatorType,DEFAULT('Auto Fill'),AT(,45),PROMPTAT(,45)
  43.       #PROMPT('&Record Filter:',@S180),%RecordFilter,AT(,60),PROMPTAT(,60)
  44.       #PROMPT('Range Limit &Field:',COMPONENT(%PrimaryKey)),%RangeField,AT(,75),PROMPTAT(,75)
  45.       #ENABLE(%RangeField)
  46.         #PROMPT('Range Limit &Type:',DROP('Current Value|Single Value|Range of Values|File Relationship')),%RangeLimitType,DEFAULT('Current Value')
  47.         #BOXED,WHERE(%RangeLimitType='Single Value')
  48.           #PROMPT('&Range Limit Value:',@s100),%RangeLimit,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  49.         #ENDBOXED
  50.         #BOXED,WHERE(%RangeLimitType='Range of Values')
  51.           #PROMPT('&Low Limit Value:',@S100),%RangeLow,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  52.           #PROMPT('&High Limit Value:',@S100),%RangeHigh,AT(97,115,87,10),PROMPTAT(10,115,87,10)
  53.         #ENDBOXED
  54.         #BOXED,WHERE(%RangeLimitType='File Relationship')
  55.           #PROMPT('&Related File:',FILE),%RangeFile,AT(97,102,87,10),PROMPTAT(10,102,87,10)
  56.         #ENDBOXED
  57.       #ENDENABLE
  58.       #BUTTON('Vertical Scroll Bar Behavior'),HLP('~PBScrollBarOptions'),AT(,130,176)
  59.         #PROMPT('Scroll Bar Behavior:',DROP('Fixed Thumb|Movable Thumb')),%ScrollBehavior,DEFAULT('Fixed Thumb')
  60.         #ENABLE(%ScrollBehavior='Movable Thumb')
  61.           #PROMPT('Key Distribution:',DROP('Alpha|Last Names|Numeric Range|Date Range|Custom|Other')),%ScrollKeyDistribution,DEFAULT('Alpha')
  62.           #BOXED,WHERE(%ScrollKeyDistribution='Custom')
  63.             #BUTTON('Custom Key Distribution'),MULTI(%CustomKeyDistribution,%KeyDistributionValue),AT(10,35,180),HLP('~PBScrollBehaviorCustomKeyDistribution')
  64.               #PROMPT('Key Value:',@S10),%KeyDistributionValue
  65.             #ENDBUTTON
  66.           #ENDBOXED
  67.           #BOXED,WHERE(%ScrollKeyDistribution='Numeric Range')
  68.             #PROMPT('From Value:',@S20),%KeyArrayFromValue,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  69.             #PROMPT('Thru Value:',@S20),%KeyArrayThruValue,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  70.           #ENDBOXED
  71.           #BOXED,WHERE(%ScrollKeyDistribution='Date Range')
  72.             #PROMPT('From Date:',@D2),%KeyArrayFromDate,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  73.             #PROMPT('Thru Date:',@D2),%KeyArrayThruDate,AT(100,47,90,10),PROMPTAT(10,47,90,10)
  74.           #ENDBOXED
  75.           #BOXED,WHERE(%ScrollKeyDistribution='Other')
  76.             #PROMPT('Key Array Name:',@S40),%KeyArrayName,AT(100,35,90,10),PROMPTAT(10,35,90,10)
  77.           #ENDBOXED
  78.         #ENDENABLE
  79.       #ENDBUTTON
  80.     #ENDTAB
  81.     #TAB('&View'),WHERE(NOT %UsingViewStructure),HLP('~PBDropComboBrowseViewTab')
  82.       #DISPLAY('Use of a view structure for this browse has not been'),AT(,30)
  83.       #DISPLAY('enabled. To have the browse use a view you must first')
  84.       #DISPLAY('check the "Use View Structure" option from the')
  85.       #DISPLAY('Configuration properties page.  After you complete this')
  86.       #DISPLAY('step you will be able to change view properties from')
  87.       #DISPLAY('this page.')
  88.     #ENDTAB
  89.     #TAB('&View'),WHERE(%UsingViewStructure),HLP('~PBDropComboBrowseViewTab')
  90.        #PROMPT('&Filter:',@S180),%ViewStructureFilter,PROMPTAT(10,30,25),AT(30,30,153)
  91.        #DISPLAY('"Hot" Fields:'),AT(,45)
  92.        #BUTTON('"Hot" Fields'),MULTI(%HotFields,%HotField & SUB(' (BIND)',1,7*%HotFieldBound)),HLP('~PBViewHotFields'),INLINE,AT(,,,85)
  93.          #PROMPT('Hot Field:',FIELD),%HotField
  94.          #VALIDATE(%HotField,'You Must Select a Hot Field')
  95.          #PROMPT('BIND Field:',CHECK),%HotFieldBound
  96.        #ENDBUTTON
  97.     #ENDTAB
  98.     #PREPARE
  99.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  100.     #ENDPREPARE
  101.     #TAB('&Colors'),WHERE(NOT %ControlHasColor),HLP('~PBDropComboBrowseColorsTab')
  102.       #DISPLAY('No color options were checked in the list box formatter.'),AT(,30)
  103.       #DISPLAY('To enable colors in a list box you must first check the')
  104.       #DISPLAY('color option for each field that will use coloring.')
  105.       #DISPLAY('After you complete this step you a will be able to set the')
  106.       #DISPLAY('color properties for each field from this page.')
  107.     #ENDTAB
  108.     #TAB('&Colors'),WHERE(%ControlHasColor = %True),HLP('~PBDropComboBrowseColorsTab')
  109.       #PREPARE
  110.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  111.       #ENDPREPARE
  112.       #BUTTON('Customize Colors'),FROM(%ControlField,%ControlField),AT(,30),HLP('~PBCustomizeColors'),INLINE,WHERE(%ControlFieldHasColor)
  113.         #PREPARE
  114.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  115.         #ENDPREPARE
  116.         #BOXED('Default Colors')
  117.           #PROMPT('&Foreground Normal:',COLOR),%ControlFieldForegroundNormal,DEFAULT(-1)
  118.           #PROMPT('&Background Normal:',COLOR),%ControlFieldBackgroundNormal,DEFAULT(-1)
  119.           #PROMPT('&Foreground Selected:',COLOR),%ControlFieldForegroundSelected,DEFAULT(-1)
  120.           #PROMPT('&Background Selected:',COLOR),%ControlFieldBackgroundSelected,DEFAULT(-1)
  121.         #ENDBOXED
  122.         #BOXED('Conditional Color Assignments')
  123.           #BUTTON('Conditional Color Assignments'),MULTI(%ConditionalColors,%ColorCondition),INLINE,HLP('~PBConditionalColors')
  124.             #PROMPT('&Condition:',@S255),%ColorCondition
  125.             #PROMPT('&Foreground Normal:',COLOR),%ConditionalControlFieldForegroundNormal,DEFAULT(-1)
  126.             #PROMPT('&Background Normal:',COLOR),%ConditionalControlFieldBackgroundNormal,DEFAULT(-1)
  127.             #PROMPT('&Foreground Selected:',COLOR),%ConditionalControlFieldForegroundSelected,DEFAULT(-1)
  128.             #PROMPT('&Background Selected:',COLOR),%ConditionalControlFieldBackgroundSelected,DEFAULT(-1)
  129.           #ENDBUTTON
  130.         #ENDBOXED
  131.       #ENDBUTTON
  132.     #ENDTAB
  133.     #PREPARE
  134.       #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  135.     #ENDPREPARE
  136.     #TAB('&Icons'),WHERE(NOT %ControlHasIcon),HLP('~PBDropComboBrowseIconsTab')
  137.       #DISPLAY('No icons fields were defined in the list box formatter.'),AT(,30)
  138.       #DISPLAY('To define an icon in a list box you must first check the')
  139.       #DISPLAY('icon option for each field that will display an icon.')
  140.       #DISPLAY('After you complete this step you a will be able to set the')
  141.       #DISPLAY('icon properties for each field from this page.')
  142.     #ENDTAB
  143.     #TAB('&Icons'),WHERE(%ControlHasIcon = %True),HLP('~PBDropComboBrowseIconsTab')
  144.       #PREPARE
  145.         #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  146.       #ENDPREPARE
  147.       #BUTTON('&Customize Icons'),FROM(%ControlField,%ControlField & ' - ' & %ControlFieldIcon),AT(,30),HLP('~PBCustomizeIcons'),INLINE,WHERE(%ControlFieldHasIcon)
  148.         #PREPARE
  149.           #FIND(%ControlInstance,%ActiveTemplateInstance,%Control)
  150.         #ENDPREPARE
  151.         #BOXED('Default Icon')
  152.           #PROMPT('Icon:',@S40),%ControlFieldIcon
  153.         #ENDBOXED
  154.         #BOXED('Conditional Icon Usage')
  155.           #BUTTON('&Conditional Icon Usage'),MULTI(%ConditionalIcons,%IconCondition),INLINE,HLP('~PBConditionalIcons')
  156.             #PROMPT('&Condition:',@S255),%IconCondition
  157.             #PROMPT('Icon:',@S40),%ConditionalControlFieldIcon
  158.           #ENDBUTTON
  159.         #ENDBOXED
  160.       #ENDBUTTON
  161.     #ENDTAB
  162.   #ENDSHEET
  163. #ENDBUTTON
  164. #CLASS('Format Browse','Format a variable in the ' & %ActiveTemplateInstanceDescription)
  165. #!
  166. #!
  167. #!
  168. #!-------------------------------------------------------------------------
  169. #ATSTART
  170. #DECLARE(%UsingDropCombo)
  171. #SET(%UsingDropCombo,1)
  172. #DECLARE(%UsingMultiDisplay)
  173. #CLEAR(%UsingMultiDisplay)
  174. #DECLARE(%UsingInLineEntry)
  175. #CLEAR(%UsingInLineEntry)
  176. #DECLARE(%UpdateProcedure)
  177. #CLEAR(%UpdateProcedure)
  178. #DECLARE(%RelationToListBoxes)
  179. #SET(%RelationToListBoxes,'None')
  180. #DECLARE(%ParentListControl)
  181. #CLEAR(%ParentListControl)
  182. #DECLARE(%LocatorName)
  183. #CLEAR(%LocatorName)
  184. #DECLARE(%LocatorField)
  185. #DECLARE(%LocatorControl)
  186. #DECLARE(%LocatorType)
  187. #SET(%LocatorType,'Combo')
  188. #DECLARE(%CmbNo)
  189. #SET(%CmbNo,%ActiveTemplateInstance)
  190. #DECLARE(%CmtPos)
  191. #SET(%CmtPos,65)
  192. #COMMENT(%CmtPos)
  193. #DECLARE(%UsingRevKeyOrder)
  194. #IF(%KeyDisplayOrder = 'Reverse')
  195.   #SET(%UsingRevKeyOrder,%True)
  196. #ELSE
  197.   #SET(%UsingRevKeyOrder,%False)
  198. #ENDIF
  199. #INSERT(%FileControlInitialize(Clarion))
  200. #INSERT(%BrowseBoxControlInitialize)
  201. #INSERT(%BuildQueueFieldList)
  202. #INSERT(%SetupSingleDisplay)
  203. #INSERT(%BuildColorConstruct)
  204. #INSERT(%BuildIconConstruct)
  205. #ENDAT
  206. #!-------------------------------------------------------------------------
  207. #AT(%CustomGlobalDeclarations)
  208.   #INSERT(%FileControlSetFlags(Clarion))
  209. #ENDAT
  210. #!-------------------------------------------------------------------------
  211. #AT(%SetIconListProperties),WHERE(%ListBoxHasIcon)
  212. #INSERT(%AddAllIconsForControl)
  213. #ENDAT
  214. #!-------------------------------------------------------------------------
  215. #AT(%SaveFieldsForRangeFilter)
  216. #INSERT(%GenerateSaveVars)
  217. #INSERT(%GenerateComboSaveVars)
  218. #ENDAT
  219. #!-------------------------------------------------------------------------
  220. #AT(%ProcedureSetup)
  221. #INSERT(%InitializeSaveVars)
  222. #ENDAT
  223. #!-------------------------------------------------------------------------
  224. #AT(%MultiSortOrderDeclarations)
  225. #!#INSERT(%BuildFormatStrings)
  226. #!
  227. #ENDAT
  228. #!-------------------------------------------------------------------------
  229. #AT(%DataSectionBeforeWindow)
  230.   #IF(%ScrollBehavior='Movable Thumb')
  231.     #CASE(%ScrollKeyDistribution)
  232.     #OF('Numeric Range')
  233.       #IF(%KeyArrayThruValue < %KeyArrayFromValue)
  234.         #SET(%KeyArrayThruValue,%KeyArrayFromValue)
  235.       #ENDIF
  236.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  237. %[20]ValueConstruct LIKE(%ThumbLocatorField)
  238.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom')
  239. %[20]ValueConstruct EQUATE(%KeyArrayFromValue)
  240.       #SET(%ValueConstruct,%KeyArrayThruValue - %KeyArrayFromValue + 1)
  241.       #SET(%ArrayRangeStep,%ValueConstruct / 100)
  242.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep')
  243. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  244.  
  245.     #OF('Date Range')
  246.       #IF(%KeyArrayThruDate < %KeyArrayFromDate)
  247.         #SET(%KeyArrayThruDate,%KeyArrayFromDate)
  248.       #ENDIF
  249.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  250. %[20]ValueConstruct LIKE(%ThumbLocatorField)
  251.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeFrom')
  252. %[20]ValueConstruct EQUATE(%KeyArrayFromDate)
  253.       #SET(%ValueConstruct,%KeyArrayThruDate - %KeyArrayFromDate + 1)
  254.       #SET(%ArrayRangeStep,%ValueConstruct / 100)
  255.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':RangeStep')
  256. %[20]ValueConstruct EQUATE(%ArrayRangeStep)
  257.  
  258.     #OF('Custom')
  259.       #CLEAR(%CustomSize)
  260.       #CLEAR(%CustomStrLen)
  261.       #FOR(%CustomKeyDistribution)
  262.         #IF(%CustomSize < LEN(CLIP(%KeyDistributionValue)))
  263.           #SET(%CustomSize,LEN(CLIP(%KeyDistributionValue)))
  264.         #ENDIF
  265.       #ENDFOR
  266.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom')
  267. %[20]ValueConstruct STRING('%|
  268.       #FOR(%CustomKeyDistribution)
  269.         #IF(%CustomStrLen => 60)
  270. %SnglQuote |
  271.                            &'%|
  272.           #CLEAR(%CustomStrLen)
  273.         #ENDIF
  274.         #SET(%CustomStrLen,%CustomStrLen + %CustomSize)
  275. %[%CustomSize]KeyDistributionValue%|
  276.       #ENDFOR
  277. %SnglQuote)
  278.       #SET(%ArrayOverField,'SORT:' & %BrwLbl & ':Custom')
  279.       #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom:Array')
  280.       #SET(%ArrayDimSize,ITEMS(%CustomKeyDistribution))
  281. %[20]ValueConstruct STRING(%CustomSize),DIM(%ArrayDimSize),OVER(%ArrayOverField)
  282.  
  283.     #ENDCASE
  284.   #ENDIF
  285. #ENDAT
  286. #!-------------------------------------------------------------------------
  287. #AT(%BrowseQueueDeclaration)
  288. #INSERT(%BuildBrowseBoxQueue)
  289. #IF(%UsingViewStructure)
  290.   #SET(%ValueConstruct,'VIEW:' & %ListQueue)
  291. #INSERT(%ConstructView)
  292. #ENDIF
  293. #IF(%UsingRevKeyOrder)
  294.   #SET(%ValueConstruct,'KeyOrder:' & %BrwLbl)
  295. %[20]ValueConstruct STRING('<255>')
  296. #ENDIF
  297. #ENDAT
  298. #!-------------------------------------------------------------------------
  299. #AT(%AfterFileOpen),WHERE(%UsingViewStructure)
  300. #FOR(%HotFields),WHERE(%HotFieldBound)
  301. BIND('%HotField',%HotField)
  302. #ENDFOR
  303. #ENDAT
  304. #!-------------------------------------------------------------------------
  305. #AT(%BeforeFileClose),WHERE(%UsingViewStructure)
  306. #FOR(%HotFields),WHERE(%HotFieldBound)
  307. UNBIND('%HotField')
  308. #ENDFOR
  309. CLOSE(VIEW:%ListQueue)
  310. #ENDAT
  311. #!-------------------------------------------------------------------------
  312. #AT(%RefreshWindowBeforeDisplay)
  313. DO BrowseCombo:%BrwLbl
  314. #ENDAT
  315. #!-------------------------------------------------------------------------
  316. #AT(%ProcedureRoutines)
  317. #FIX(%File,%Primary)
  318. #FIX(%Key,%PrimaryKey)
  319. #INSERT(%BrowseComboRoutine)
  320. #INSERT(%ComboAutoFillSearchRoutine)
  321. #INSERT(%SetFieldIconsRoutine)
  322. #INSERT(%SetFieldColorsRoutine)
  323. #INSERT(%AddComboRecordRoutine)
  324. #ENDAT
  325. #!-------------------------------------------------------------------------
  326. #AT(%EndOfProcedure)
  327. FREE(%ListQueue)                                             #<!Release Memory use by Browse Queue
  328. #ENDAT
  329. #!-------------------------------------------------------------------------
  330. #AT(%ControlPostEventCaseHandling,%ListControl),WHERE(%ProcedureTemplate <> 'PowerBrowse')
  331. #EMBED(%BeforeCallBrowseListRoutine,'Just Before Calling BrowseCombo Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  332. DO BrowseCombo:%BrwLbl                                        #<! Fill Browse Area
  333. #EMBED(%AfterCallBrowseListRoutine,'Just After Calling BrowseCombo Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  334. #ENDAT
  335. #!-------------------------------------------------------------------------
  336. #AT(%CallBrowseListRoutine,%Control),WHERE(%ProcedureTemplate = 'PowerBrowse')
  337. #EMBED(%BeforeCallBrowseListRoutine,'Just Before Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  338. DO BrowseCombo:%BrwLbl                                        #<! Fill Browse Area
  339. #EMBED(%AfterCallBrowseListRoutine,'Just After Calling BrowseList Routine'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  340. #ENDAT
  341. #!-------------------------------------------------------------------------
  342. #AT(%ControlEventHandling,%ListControl,'Accepted')
  343.   #IF(%ComboLocatorType = 'Auto Fill')
  344. IF NOT TARGET{PROP:AcceptAll} AND NOT TC_PROP:BRW(%ListControl,TCPROP:DroppedDown)
  345.   POST(TCEVENT:AcceptSelection,%ListControl)
  346. END
  347.   #ENDIF
  348.   #IF(%ComboUpdateProcedure)
  349. DO AddComboRecord:%BrwLbl
  350. CYCLE
  351.   #ENDIF
  352. #ENDAT
  353. #!-------------------------------------------------------------------------
  354. #AT(%ControlEventHandling,%ListControl,'NewSelection')
  355.   #IF(%ComboLocatorType = 'Auto Fill')
  356. DO AutoFillSearch:%BrwLbl
  357. CYCLE
  358.   #ENDIF
  359. #ENDAT
  360. #!-------------------------------------------------------------------------
  361. #AT(%ControlOtherEventHandling,%ListControl),WHERE(%RefreshWindowOnSelection)
  362. IF EVENT() = TCEVENT:RejectSelection                            #<!If Combo Field Selection was Rejected
  363.   POST(TCEVENT:AcceptSelection,%ListControl)                    #<!  Force Accept Before Window Refresh
  364. END                                                             #<!End
  365. IF EVENT() = TCEVENT:AcceptSelection                            #<!If Combo Field Selection was Made
  366.   DO RefreshWindow                                              #<!  Force Window Refresh
  367. END                                                             #<!End
  368. #ENDAT
  369. #!-------------------------------------------------------------------------
  370. #AT(%ControlEventHandling,%ListControl,'DroppingDown')
  371. #FIX(%File,%Primary)
  372. #FIX(%Key,%PrimaryKey)
  373. #INSERT(%SetComboSaveVariables)
  374. %LocatorName = %ControlUse
  375. SET(%Key,%Key)
  376. NEXT(%File)
  377. TC_PROP:BRW(%ListControl,TCPROP:Action,TCACTION:Refresh)
  378. TC_PROP:BRW(%ListControl,TCPROP:SetToPosition,1)
  379. #ENDAT
  380. #!-------------------------------------------------------------------------
  381. #!
  382. #!
  383. #!-------------------------------------------------------------------------
  384. #GROUP(%InitializeDropComboField)
  385. #FIX(%File,%Primary)
  386. #FIX(%Key,%PrimaryKey)
  387.  #IF(%ComboRestoreOnESC)
  388. IF EVENT() = TCEVENT:RejectSelection OR |                          #<!If User Rejected Combo Selection OR
  389.    NOT TC_PROP:BRW(%ListControl,TCPROP:Initialized)                #<!  Browse Not Intialized
  390.   IF EVENT() = TCEVENT:RejectSelection                             #<!  If User Rejected Combo Selection
  391.     #INSERT(%RestoreComboSaveVariables)
  392.   END                                                              #<!  End If
  393.  #ELSE
  394. IF NOT TC_PROP:BRW(%ListControl,TCPROP:Initialized)                #<!If Browse Not Intialized
  395.  #ENDIF
  396.   CLEAR(%FilePrefix:RECORD)                                        #<!  Clear Record Area
  397.   #EMBED(%InitializeDropCombo,'Initialize Drop Combo'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  398.  #CASE(%ComboRelationType)
  399.  #OF('Field Value')
  400.   %LocatorName = %ListControlUse                                   #<!  Set Lookup Key Value
  401.   GET(%File,%Key)                                                  #<!  Get Current Record
  402.  #OF('Non-Related Key')
  403.   %ComboLookupField = %ComboRelatedField                           #<!  Set Lookup Key Values
  404.   GET(%File,%ComboLookupKey)                                       #<!  Get Current Record
  405.  #ENDCASE
  406.   %ListControlUse = %LocatorName                                   #<!  Set Combo Field Value
  407.   DISPLAY(%ListControl)                                            #<!  Redisplay Combo Field
  408. END                                                                #<!End If
  409.  
  410. IF EVENT() = TCEVENT:AcceptSelection                               #<!If User Accepted combo Selection
  411.   #INSERT(%SetRelatedComboFields)
  412.   %ListControlUse = %LocatorName                                   #<!  Set Combo Field Value
  413.   DISPLAY(%ListControl)                                            #<!  Redisplay Combo Field
  414.   %ListControl{PROP:Touched}=FALSE                                 #<!  Set Field as Changed
  415. END                                                                #<!End If
  416. #!-------------------------------------------------------------------------
  417. #GROUP(%SetRelatedComboFields)
  418.  #EMBED(%SetRelatedDropComboFields,'Set Related Drop Combo Fields'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  419.  #CASE(%ComboRelationType)
  420.  #OF('Field Value')
  421. %ListControlUse = %LocatorName                                     #<!  Set Related Combo Field
  422.  #OF('Non-Related Key')
  423. %ComboRelatedField = %ComboLookupField                             #<!  Set Related Combo Field
  424.  #ENDCASE
  425. #!-------------------------------------------------------------------------
  426. #GROUP(%GenerateComboSaveVars)
  427.  #IF(%ComboRestoreOnESC)
  428.   #CASE(%ComboRelationType)
  429.   #OF('Field Value')
  430.     #SET(%ValueConstruct,'CMBSAV' & %CmbNo &  ':' & %LocatorName)
  431. %[32]ValueConstruct LIKE(%LocatorName)                            #<! Combo Save Field Value for Restore
  432.   #OF('Non-Related Key')
  433.     #SET(%ValueConstruct,'CMBSAV' & %CmbNo &  ':' & %ComboRelatedField)
  434. %[32]ValueConstruct LIKE(%ComboRelatedField)                      #<! Combo Save Field Value for Restore
  435.   #ENDCASE
  436.  #ENDIF
  437. #!-------------------------------------------------------------------------
  438. #GROUP(%SetComboSaveVariables)
  439.  #IF(%ComboRestoreOnESC)
  440.   #CASE(%ComboRelationType)
  441.   #OF('Field Value')
  442. CMBSAV%CmbNo:%LocatorName = %LocatorName                           #<! Save Copy of Current Combo Value
  443.   #OF('Non-Related Key')
  444. CMBSAV%CmbNo:%ComboRelatedField = %ComboRelatedField               #<! Save Copy of Current Combo Value
  445.   #ENDCASE
  446.  #ENDIF
  447. #!-------------------------------------------------------------------------
  448. #GROUP(%RestoreComboSaveVariables)
  449.  #IF(%ComboRestoreOnESC)
  450.   #CASE(%ComboRelationType)
  451.   #OF('Field Value')
  452. %LocatorName = CMBSAV%CmbNo:%LocatorName                           #<!  Restore to Value Before Dropping Down
  453.   #OF('Non-Related Key')
  454. %ComboRelatedField = CMBSAV%CmbNo:%ComboRelatedField               #<!  Restore to Value Before Dropping Down
  455.   #ENDCASE
  456.  #ENDIF
  457. #!-------------------------------------------------------------------------
  458. #GROUP(%BrowseComboRoutine)
  459. #COMMENT(100)
  460. !--------------------------------------------------------------------------------------------------!
  461. ! BrowseCombo:%BrwLbl Routine                                                                    #<!
  462. !                                                                                                  !
  463. ! This routine calls the browser to do a page-loaded combo display from a file.                    !
  464. !--------------------------------------------------------------------------------------------------!
  465. #COMMENT(%CmtPos)
  466. #SET(%ValueConstruct,'BrowseCombo:' & %BrwLbl)
  467. %[20]ValueConstruct ROUTINE
  468.  
  469.   #INSERT(%InitializeDropComboField)
  470.  
  471.   IF NOT TC_PROP:BRW(%ListControl,TCPROP:Initialized)                #<!If Browse Not Initialized
  472.     IF NOT TC_InitBrowse(%ListControl,THREAD()) THEN EXIT.           #<!  Initialize Browse Processing for List Box
  473.     #IF(NOT %UsingMultiDisplay AND %ScrollBehavior='Movable Thumb')
  474.     TC_PROP:BRW(%ListControl,TCPROP:ThumbOption,1)                   #<!  Use Thumb Control Actions
  475.     #ENDIF
  476.     #IF(%UsingViewStructure)
  477.     TC_PROP:BRW(%ListControl,TCPROP:UseView,1)                       #<!  Use a View Structure
  478.     #ENDIF
  479.   END                                                                #<!End If
  480. #<!
  481.   IF NOT TC_PROP:BRW(%ListControl,TCPROP:DroppedDown)                #<!If Combo is Not Dropped Down
  482.     EXIT                                                             #<!  Don't Call Browse Procedure
  483.   END                                                                #<!End
  484. #<!
  485.   LOOP                                                               #<!Process File Browse Loop
  486.     #IF(%KeyDisplayOrder = 'Reverse')
  487.     TC_PROP:BRW(%ListControl,TCPROP:RevOrder,RevOrder:%BrwLbl)       #<!  Set Reverse Ordering Flag
  488.     #ENDIF
  489.     #FOR(%KeyField)
  490.       #IF(%KeyFieldSequence='DESCENDING')
  491.     TC_PROP:BRW(%ListControl,TCPROP:DescendingKey,True)              #<!  Set Descending Key Flag
  492.       #ENDIF
  493.     #ENDFOR
  494.     TC_Browse(%[20]ListControl ,|                                    #<!  Browse Handle
  495.       #IF(%UsingViewStructure)
  496.               VIEW:%[15]ListQueue ,|                                 #<!  File Name
  497.       #ELSE
  498.               %[20]File ,|                                           #<!  File Name
  499.       #ENDIF
  500.               #SET(%ValueConstruct,%FilePrefix & ':RECORD')
  501.               %[20]ValueConstruct ,|                                 #<!  Record Area
  502.               %[20]Key ,|                                            #<!  Key Order for Display
  503.               %[20]ListQueue ,|                                      #<!  Queue Name for List
  504.     #IF(%RangeField)
  505.       #IF(%FilterKeySeg1)
  506.         #SET(%EndOfProcedureCall,',|')
  507.       #ELSE
  508.         #SET(%EndOfProcedureCall,')')
  509.       #ENDIF
  510.       #SET(%ValueConstruct,%BrwLbl & ':Position')
  511.               %[20]ValueConstruct ,|                                 #<!  Record Position in Key Order
  512.       #IF(%RangeIsString = 'GROUP')
  513.          #SET(%ValueConstruct,'GRP:' & %RangeField)
  514.               %[20]ValueConstruct ,|                                 #<!  Range Field
  515.       #ELSE
  516.               %[20]RangeField ,|                                     #<!  Range Field
  517.       #ENDIF
  518.       #IF(%RangeIsString)
  519.         #SET(%ValueConstruct,'True')
  520.         #CASE(%RangeLimitType)
  521.         #OF('Current Value')
  522.               #SET(%SaveRangeField,'SAVE:' & %BrwLbl & ':' & %RangeField)
  523.               %[20]SaveRangeField ,|                                 #<!  Match Range - Low Value
  524.               %[20]SaveRangeField ,|                                 #<!  Match Range - High Value
  525.               %[20]ValueConstruct %EndOfProcedureCall                #<!  Range Field is a String Flag
  526.         #OF('Single Value')
  527.               %[20]RangeLimit ,|                                     #<!  Match Range - Low Value
  528.               %[20]RangeLimit ,|                                     #<!  Match Range - High Value
  529.               %[20]ValueConstruct %EndOfProcedureCall                #<!  Range Field is a String
  530.         #OF('Range of Values')
  531.               %[20]RangeLow ,|                                       #<!  Match Range - Low Value
  532.               %[20]RangeHigh ,|                                      #<!  Match Range - High Value
  533.               %[20]ValueConstruct %EndOfProcedureCall                #<!  Range Field is a String Flag
  534.         #OF('File Relationship')
  535.               %[20]RelationRangeLimit ,|                             #<!  Match Range - Low Value
  536.               %[20]RelationRangeLimit ,|                             #<!  Match Range - High Value
  537.               %[20]ValueConstruct %EndOfProcedureCall                #<!  Range Field is a String
  538.         #ENDCASE
  539.       #ELSE
  540.         #CASE(%RangeLimitType)
  541.         #OF('Current Value')
  542.               #SET(%SaveRangeField,'SAVE:' & %BrwLbl & ':' & %RangeField)
  543.               %[20]SaveRangeField ,|                                 #<!  Match Range - Low Value
  544.               %[20]SaveRangeField %EndOfProcedureCall                #<!  Match Range - High Value
  545.         #OF('Single Value')
  546.               %[20]RangeLimit ,|                                     #<!  Match Range - Low Value
  547.               %[20]RangeLimit %EndOfProcedureCall                    #<!  Match Range - High Value
  548.         #OF('Range of Values')
  549.               %[20]RangeLow ,|                                       #<!  Match Range - Low Value
  550.               %[20]RangeHigh %EndOfProcedureCall                     #<!  Match Range - High Value
  551.         #OF('File Relationship')
  552.               %[20]RelationRangeLimit ,|                             #<!  Match Range - Low Value
  553.               %[20]RelationRangeLimit %EndOfProcedureCall            #<!  Match Range - High Value
  554.         #ENDCASE
  555.         #IF(%FilterKeySeg1)
  556.               #SET(%ValueConstruct,'False')
  557.               %[20]ValueConstruct ,|                                 #<!  Range Field is a String Flag
  558.         #ENDIF
  559.       #ENDIF
  560.       #IF(%FilterKeySeg3)
  561.               %[20]FilterKeySeg3 ,|                                  #<!  Filter Key Component
  562.               %[20]FilterKeySegLink3 ,|                              #<!  Filter Key Component Value
  563.       #ENDIF
  564.       #IF(%FilterKeySeg2)
  565.               %[20]FilterKeySeg2 ,|                                  #<!  Filter Key Component
  566.               %[20]FilterKeySegLink2 ,|                              #<!  Filter Key Component Value
  567.       #ENDIF
  568.       #IF(%FilterKeySeg1)
  569.               %[20]FilterKeySeg1 ,|                                  #<!  Filter Key Component
  570.               %[20]FilterKeySegLink1 )                               #<!  Filter Key Component Value
  571.       #ENDIF
  572.     #ELSE
  573.               #SET(%ValueConstruct,%BrwLbl & ':Position')
  574.               %[20]ValueConstruct )                                  #<!  Record Position in Key Order
  575.     #ENDIF
  576.  
  577.     CASE TC_PROP:BRW(%ListControl,TCPROP:Action)                     #<!Process Browse Actions
  578.     OF TCACTION:FillQueue                                            #<!Fill List Queue Action
  579.       #IF(%RecordFilter)
  580.       IF NOT(%RecordFilter)                                          #<!If Filter Condition Not Met
  581.         TC_PROP:BRW(%ListControl,TCPROP:SkipRecord,1)                #<!  Tell Browse to Skip Record
  582.         CYCLE                                                        #<!  No need to fill the Queue
  583.       END                                                            #<!End If
  584.       #ENDIF
  585.       #IF(NOT %UsingViewStructure)
  586.       #INSERT(%StandardSecondaryLookups)
  587.       #ENDIF
  588.       #EMBED(%FormatBrowse,'Format an element of the browse queue'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  589.       #INSERT(%StandardFormula,'Format Browse')
  590.       #FIX(%File,%Primary)
  591.       #FIX(%Key,%PrimaryKey)
  592.       #FOR(%QueueField)                                              #! FOR each field in list
  593.       %BrwLbl:%QueueField = %QueueFieldAssignment                    #<!  Move Data to Queue
  594.       #ENDFOR
  595.       #IF(%ListBoxHasIcon)
  596.       DO SetFieldIcons:%BrwLbl                                       #<!  Set Icons for List Box
  597.       #ENDIF
  598.       #IF(%ListBoxHasColor)                                         
  599.       DO SetFieldColors:%BrwLbl                                      #<!  Set Colors for List Box
  600.       #ENDIF
  601. #<!
  602.     #IF(NOT %UsingMultiDisplay AND %ScrollBehavior = 'Movable Thumb')
  603.     OF TCACTION:DragThumb                                            #<!Process Drag on Vertical Scroll Bar
  604.       #CASE(%ScrollKeyDistribution)
  605.       #OF('Alpha')
  606.       Thumb%# = %ListControl{PROP:VScrollPos}                        #<!  Calculate Thumb Position
  607.       #IF(%UsingRevKeyOrder)
  608.       IF RevOrder:%BrwLbl THEN Thumb%# = 101 - Thumb%#.              #<!  Adjust Thumb Position for Reverse Key Order
  609.       #ENDIF
  610.       %ThumbLocatorField = Sort:Alpha:Array[Thumb%#]                 #<!  Set Thumb Position
  611.       #OF('Last Names')
  612.       Thumb%# = %ListControl{PROP:VScrollPos}                        #<!  Calculate Thumb Position
  613.       #IF(%UsingRevKeyOrder)
  614.       IF RevOrder:%BrwLbl THEN Thumb%# = 101 - Thumb%#.              #<!  Adjust Thumb Position for Reverse Key Order
  615.       #ENDIF
  616.       %ThumbLocatorField = Sort:Name:Array[Thumb%#]                  #<!  Set Thumb Position
  617.       #OF('Numeric Range')
  618.       #OROF ('Date Range')
  619.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  620.       %ValueConstruct = %ListControl{PROP:VScrollPos}
  621.         #IF(%UsingRevKeyOrder)
  622.       IF RevOrder:%BrwLbl THEN %ValueConstruct = 101 - %ValueConstruct.
  623.         #ENDIF
  624.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue' & ' = Sort:' & %BrwLbl & ':KeyValue' & ' * Sort:' & %BrwLbl & ':RangeStep' & ' + Sort:' & %BrwLbl & ':RangeFrom')
  625.       %ValueConstruct
  626.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  627.       %ThumbLocatorField = %ValueConstruct
  628.       #OF('Custom')
  629.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom:Array')
  630.       Thumb%# = ROUND(%ListControl{PROP:VScrollPos} / |              #<!  Calculate Thumb Position
  631.                (100 / MAXIMUM(%ValueConstruct,1)),1)                 #<!
  632.       IF NOT Thumb%# THEN Thumb%# = 1.                               #<!
  633.         #IF(%UsingRevKeyOrder)
  634.       IF RevOrder:%BrwLbl THEN Thumb%# = 101 - Thumb%#.              #<!  Adjust Thumb Position for Reverse Key Order
  635.         #ENDIF
  636.       %ThumbLocatorField = %ValueConstruct[Thumb%#]                  #<!  Set Key Field for Redisplay
  637.       #OF('Other')
  638.       Thumb%# = ROUND(%ListControl{PROP:VScrollPos} / |              #<!  Calculate Thumb Position
  639.                (100 / MAXIMUM(%KeyArrayName,1)),1)                   #<!
  640.       IF NOT Thumb%# THEN Thumb%# = 1.                               #<!
  641.       #IF(%UsingRevKeyOrder)
  642.       IF RevOrder:%BrwLbl THEN Thumb%# = 101 - Thumb%#.              #<!  Adjust Thumb Position for Reverse Key Order
  643.       #ENDIF
  644.       %ThumbLocatorField = %KeyArrayName[Thumb%#]                    #<!  Set Key Field for Redisplay
  645.       #ENDCASE
  646.       POST(TCEVENT:SetToKey,%ListControl)                            #<!  Set to Key and Redisplay List
  647. #<!
  648.     #?OF TCACTION:SetThumb                                           #<!Process Set Thumb Position
  649.       #CASE(%ScrollKeyDistribution)
  650.       #OF('Alpha')
  651.       LOOP Thumb%# = 1 TO 100
  652.         IF Sort:Alpha:Array[Thumb%#] => UPPER(SUB(%ThumbLocatorField,1,2)) THEN BREAK.
  653.       END
  654.       #OF('Last Names')
  655.       LOOP Thumb%# = 1 TO 100
  656.         IF Sort:Name:Array[Thumb%#] => UPPER(SUB(%ThumbLocatorField,1,3)) THEN BREAK.
  657.       END
  658.       #OF('Numeric Range')
  659.       #OROF ('Date Range')
  660.       LOOP Thumb%# = 1 TO 100
  661.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  662.         %ValueConstruct = Thumb%#
  663.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue' & ' = Sort:' & %BrwLbl & ':KeyValue' & ' * Sort:' & %BrwLbl & ':RangeStep' & ' + Sort:' & %BrwLbl & ':RangeFrom')
  664.         %ValueConstruct
  665.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':KeyValue')
  666.         IF %ValueConstruct => %ThumbLocatorField
  667.           BREAK
  668.         END
  669.       END
  670.       #OF('Custom')
  671.         #SET(%ValueConstruct,'SORT:' & %BrwLbl & ':Custom:Array')
  672.       LOOP Thumb%# = 1 TO MAXIMUM(%ValueConstruct,1)                 #<!  Read Key Distribution Array
  673.         IF %ValueConstruct[Thumb%#] => |                             #<!    If Key => Current Field Value
  674.            UPPER(SUB(%ThumbLocatorField,1,LEN(%ValueConstruct[1])))
  675.           BREAK                                                      #<!      Thumb Position Found
  676.         END                                                          #<!    End If
  677.       END                                                            #<!  End Loop
  678.       Thumb%# = ROUND(100 / MAXIMUM(%ValueConstruct,1) * (Thumb%#-1),1)
  679.       #OF('Other')
  680.       LOOP Thumb%# = 1 TO MAXIMUM(%KeyArrayName,1)                   #<!  Read Key Distribution Array
  681.         IF %KeyArrayName[Thumb%#] => |                               #<!    If Key => Current Field Value
  682.            UPPER(SUB(%ThumbLocatorField,1,LEN(%KeyArrayName[1])))
  683.           BREAK                                                      #<!      Thumb Position Found
  684.         END                                                          #<!    End If
  685.       END                                                            #<!  End Loop
  686.       Thumb%# = ROUND(100 / MAXIMUM(%KeyArrayName,1) * (Thumb%#-1),1)
  687.       #ENDCASE
  688.       #IF(%UsingRevKeyOrder)
  689.       IF RevOrder:%BrwLbl THEN Thumb%# = 101 - Thumb%#.              #<!  Adjust Thumb Position for Reverse Key Order
  690.       #ENDIF
  691.       %ListControl{PROP:VScrollPos} = Thumb%#                        #<!  Set the Thumb Position
  692. #<!
  693.     #ENDIF
  694.     #SUSPEND
  695.     #?OF TCACTION:DisplayFields                                      #<!Display Fields Action
  696.       #EMBED(%BeforeHotFieldsDisplay,'Before Hot Fields Display'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  697.     #INSERT(%StandardFormula,'Before Lookups')
  698.     #IF(NOT %UsingViewStructure)
  699.       #INSERT(%StandardSecondaryLookups)
  700.     #ENDIF
  701.     #INSERT(%StandardFormula,'After Lookups')
  702.     #FIX(%Control,%ListControl)
  703.     #SUSPEND
  704.       #EMBED(%RedisplayChildListBoxes,'Redisplay Child List Boxes'),%Control,HIDE
  705.       #?TC:BRW:ActiveList = %ListControl                             #<!  Reset List Box as Being Active
  706.     #RESUME
  707.     #IF(%HotDisplay)
  708.       DISPLAY()                                                      #<!  Display All Fields
  709.     #ENDIF
  710.       #SUSPEND
  711.       #?IF RECORDS(%ListQueue)                                       #<!  If Records Displayed
  712.       #FIX(%File,%Primary)
  713.       #FIX(%Key,%PrimaryKey)
  714.       #FOR(%Control),WHERE(%Control=%ListControl)
  715.         #EMBED(%EnableSaveButtons,'Enable Save Buttons'),%Control,HIDE
  716.       #ENDFOR                                                       
  717.       #?ELSE                                                         #<!  Else
  718.       #FOR(%Control),WHERE(%Control=%ListControl)
  719.         #EMBED(%DisableSaveButtons,'Disable Save Buttons'),%Control,HIDE
  720.       #ENDFOR
  721.       #?END                                                          #<!  End If
  722.       #RESUME
  723.       #EMBED(%AfterHotFieldsDisplay,'After Hot Fields Display'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  724.     #? #<!
  725.     #RESUME
  726.     #SUSPEND
  727.     #?OF TCACTION:NoRecords                                          #<!No Records to Display Action
  728.       #SUSPEND
  729.       #?IF TC:BRW:DeletedLast                                        #<!If Last Record Deleted
  730.         #EMBED(%LastRecordDeleted,'Browse Box, last record deleted'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  731.       #?END                                                          #<!End If
  732.       #RESUME
  733.       #EMBED(%BrowseBoxEmpty,'Browse Box, no records found'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  734.       #FIX(%File,%Primary)
  735.       #FIX(%Key,%PrimaryKey)
  736.       #FOR(%Control),WHERE(%Control=%ListControl)
  737.       #EMBED(%NoRecordsAction,'No Records Action'),%Control,HIDE
  738.       #ENDFOR                                                       
  739.       #? #<!
  740.     #RESUME
  741.     #SUSPEND
  742.     #?OF TCACTION:FirstRecord                                        #<!On Insert of First Record Action
  743.       #EMBED(%OnInsertFirstRecord,'Browse Box, on insert of first record'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  744.       #? #<!
  745.     #RESUME
  746.     OF TCACTION:ExitBrowse                                           #<!Exit Browse Action
  747.       BREAK                                                          #<!
  748.     END                                                              #<!End Process Browse Actions
  749.   END                                                                #<!End Process File Browse Loop
  750.  
  751.  
  752.  
  753. #!-------------------------------------------------------------------------
  754. #GROUP(%ComboAutoFillSearchRoutine)
  755. #IF(%ComboLocatorType = 'Auto Fill')
  756. #COMMENT(100)
  757. !--------------------------------------------------------------------------------------------------!
  758. ! AutoFillSearch:%BrwLbl Routine                                                                 #<!
  759. !                                                                                                  !
  760. ! This routine processes a auto fill search for %ListControl                                     #<!
  761. !--------------------------------------------------------------------------------------------------!
  762. #COMMENT(%CmtPos)
  763. #SET(%ValueConstruct,'AutoFillSearch:' & %BrwLbl)
  764. %[20]ValueConstruct ROUTINE
  765.  
  766.   IF TC_PROP:BRW(%ListControl,TCPROP:DroppedDown) THEN EXIT.       #<!Don't Search if Combo is Dropped Down
  767.  
  768.   #IF(%RecordFilter)
  769.   LOOP
  770.     #INSERT(%CallAutoFillFunction,24)
  771. #<!
  772.     IF NOT FilterFlag%# THEN BREAK.                                #<!Exit Loop if No Need to Check Filter
  773.     IF %RecordFilter THEN CYCLE.                                   #<!Stop Search if Record Filter OK
  774.     TC:AUT:SkipRecord = True                                       #<!Tell Search to Skip to Next Record
  775.   END
  776.   #ELSE
  777.   #INSERT(%CallAutoFillFunction,10)
  778.   #ENDIF
  779.   %ListControl{PROP:Touched} = True                                #<!Set Entry Field as Changed
  780.   #INSERT(%SetRelatedComboFields)
  781.  
  782.  
  783. #ENDIF
  784. #!-------------------------------------------------------------------------
  785. #GROUP(%CallAutoFillFunction,%Indent)
  786.        #IF(%RecordFilter)
  787.          #IF(%UsingViewStructure)
  788. FilterFlag%# = TC_AutoFill(VIEW:%[15]ListQueue ,|                  #<!File Name
  789.          #ELSE
  790. FilterFlag%# = TC_AutoFill(%[20]File ,|                            #<!File Name
  791.          #ENDIF
  792.        #ELSE
  793.          #IF(%UsingViewStructure)
  794. TC_AutoFill(VIEW:%[15]ListQueue ,|                                 #<!File Name
  795.          #ELSE
  796. TC_AutoFill(%[20]File ,|                                           #<!File Name
  797.          #ENDIF
  798.        #ENDIF
  799.                 #SET(%ValueConstruct,%FilePrefix & ':RECORD')
  800. %[%Indent]Null  %[20]ValueConstruct ,|                             #<!Record Area
  801. %[%Indent]Null  %[20]Key ,|                                        #<!Key Order for Display
  802. %[%Indent]Null  %[20]LocatorName ,|                                #<!Field to Lookup
  803.       #IF(%RangeField)
  804. %[%Indent]Null  %[20]ControlUse ,|                                 #<!Entry Field to Fill
  805.         #IF(%RecordFilter)
  806.                 #SET(%ValueConstruct,'True')
  807. %[%Indent]Null  %[20]ValueConstruct ,|                             #<!Enable Record Filtering
  808.         #ELSE
  809.                 #SET(%ValueConstruct,'False')
  810. %[%Indent]Null  %[20]ValueConstruct ,|                             #<!Disable Record Filtering
  811.         #ENDIF
  812.         #IF(%FilterKeySeg1)
  813.           #SET(%EndOfProcedureCall,',|')
  814.         #ELSE
  815.           #SET(%EndOfProcedureCall,')')
  816.         #ENDIF
  817.         #IF(%RangeIsString = 'GROUP')
  818.                 #SET(%ValueConstruct,'GRP:' & %RangeField)
  819. %[%Indent]Null  %[20]ValueConstruct ,|                             #<!Range Field
  820.         #ELSE
  821. %[%Indent]Null  %[20]RangeField ,|                                 #<!Range Field
  822.         #ENDIF
  823.         #CASE(%RangeLimitType)
  824.         #OF('Current Value')
  825.                 #SET(%SaveRangeField,'SAVE:' & %BrwLbl & ':' & %RangeField)
  826. %[%Indent]Null  %[20]SaveRangeField ,|                             #<!Match Range - Low Value
  827. %[%Indent]Null  %[20]SaveRangeField %EndOfProcedureCall            #<!Match Range - High Value
  828.         #OF('Single Value')
  829. %[%Indent]Null  %[20]RangeLimit ,|                                 #<!Match Range - Low Value
  830. %[%Indent]Null  %[20]RangeLimit %EndOfProcedureCall                #<!Match Range - High Value
  831.         #OF('Range of Values')
  832. %[%Indent]Null  %[20]RangeLow ,|                                   #<!Match Range - Low Value
  833. %[%Indent]Null  %[20]RangeHigh %EndOfProcedureCall                 #<!Match Range - High Value
  834.         #OF('File Relationship')
  835. %[%Indent]Null  %[20]RelationRangeLimit ,|                         #<!Match Range - Low Value
  836. %[%Indent]Null  %[20]RelationRangeLimit %EndOfProcedureCall        #<!Match Range - High Value
  837.         #ENDCASE
  838.         #IF(%FilterKeySeg3)
  839. %[%Indent]Null  %[20]FilterKeySeg3 ,|                              #<!Filter Key Component
  840. %[%Indent]Null  %[20]FilterKeySegLink3 ,|                          #<!Filter Key Component Value
  841.         #ENDIF
  842.         #IF(%FilterKeySeg2)
  843. %[%Indent]Null  %[20]FilterKeySeg2 ,|                              #<!Filter Key Component
  844. %[%Indent]Null  %[20]FilterKeySegLink2 ,|                          #<!Filter Key Component Value
  845.         #ENDIF
  846.         #IF(%FilterKeySeg1)
  847. %[%Indent]Null  %[20]FilterKeySeg1 ,|                              #<!Filter Key Component
  848. %[%Indent]Null  %[20]FilterKeySegLink1 )                           #<!Filter Key Component Value
  849.         #ENDIF
  850.       #ELSE
  851. %[%Indent]Null  %[20]ControlUse ,|                                 #<!Entry Field to Fill
  852.         #IF(%RecordFilter)
  853.                 #SET(%ValueConstruct,'True')
  854. %[%Indent]Null  %[20]ValueConstruct )                              #<!Enable Record Filtering
  855.         #ELSE
  856.                 #SET(%ValueConstruct,'False')
  857. %[%Indent]Null  %[20]ValueConstruct )                              #<!Disable Record Filtering
  858.         #ENDIF
  859.       #ENDIF
  860. #!-------------------------------------------------------------------------
  861. #GROUP(%AddComboRecordRoutine)
  862. #IF(%ComboUpdateProcedure)
  863. #COMMENT(100)
  864. !--------------------------------------------------------------------------------------------------!
  865. ! AddComboRecord:%BrwLbl Routine                                                                 #<!
  866. !                                                                                                  !
  867. ! This routine adds a new record for a drop combo.                                               #<!
  868. !--------------------------------------------------------------------------------------------------!
  869. #COMMENT(%CmtPos)
  870. #SET(%ValueConstruct,'AddComboRecord:' & %BrwLbl)
  871. %[20]ValueConstruct ROUTINE
  872.  
  873.   IF NOT %ListControlUse THEN EXIT.
  874.   %LocatorName = %ListControlUse
  875.   GET(%File,%Key)
  876.   IF NOT ERRORCODE() THEN EXIT.
  877.  
  878.   BEEP(1)
  879.  
  880.   Button%# = MESSAGE('Would you like to add a new record?', |
  881.                     'Record Not On File',|
  882.                     ICON:Question,BUTTON:Yes+BUTTON:No)
  883.  
  884.   IF Button%# = BUTTON:Yes
  885.     #EMBED(%BeforeInsertRecord,'Before Inserting a Record'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  886.     #FIX(%File,%Primary)
  887.     #FIX(%Key,%PrimaryKey)
  888.     GET(%File,0)
  889.     CLEAR(%FilePrefix:RECORD)
  890.     %LocatorName = %ListControlUse
  891.     GlobalRequest = InsertRecord
  892.     %ComboUpdateProcedure
  893.     IF GlobalResponse = RequestCompleted
  894.       #INSERT(%SetRelatedComboFields)
  895.       DISPLAY(%ListControl)
  896.       POST(EVENT:Accepted,%ListControl)
  897.       EXIT
  898.     END
  899.     #EMBED(%AfterInsertRecord,'After Inserting a Record'),%ActiveTemplateInstance,MAP(%ActiveTemplateInstance,%ActiveTemplateinstanceDescription)
  900.     #FIX(%File,%Primary)
  901.     #FIX(%Key,%PrimaryKey)
  902.   END
  903.  
  904.   CLEAR(%ListControlUse)
  905.   SELECT(%ListControl)
  906.   %ListControl{PROP:Touched} = True
  907.  
  908.  
  909.  
  910. #ENDIF
  911. #!-------------------------------------------------------------------------